package com.zys.sac.starter.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.List;

/**
 * Created by zhongjunkai on 2022/3/15.
 */
@Data
@ConfigurationProperties(prefix = "opensource.sac")
public class SacPluginProperties {

    /**
     *  登录地址
     */
    private String login;

    /**
     * 认证模式
     */
    private String authMode;

    /**
     * 是否启用登录验证码
     */
    private String enableVerCode;

    /**
     * 是否允许同一个账号同时多次登录
     */
    private String enableMultipleToken = "true";

    /**
     * 前端密码的传输方式，在前端调用登录接口时密码的加密模式，rsa：使用rsa方式加密，plain：明文传输
     */
    private String passwordTransportMode;

    /**
     * 单点登录服务地址，单点登录模式时生效
     */
    private String ssoCheckUrl;

    /**
     * 单点登录用户信息接口地址，单点登录模式时生效
     */
    private String ssoUserInfoUrl;

    /**
     * 单点登录应用id，单点认证中心需要
     */
    private String appId;

    /**
     * token缓存有效时间
     */
    private long tokenCachedTimeInSeconds = 3600 * 8;

    @Deprecated
    private long tokenExpiredTimeInSeconds = 3600 * 3600;

    /**
     * 前端传输密码时使用的rsa私钥
     */
    private String rsaPrivateKey;

    /**
     * 前端传输密码时使用的rsa公钥
     */
    private String rsaPublicKey;

    /**
     * 免认证路径，支持ant语法
     */
    @Deprecated
    private List<String> avoidPath;

    /**
     * 规则路径，重写url过滤规则的逻辑
     * 字段格式：url:op，url：表示要处理的路径，op：用于表示处理逻辑，其值包括，anon，auth，perm
     * deny: 不允许访问
     * pass：不需要鉴权，任意用户都可以访问
     * auth：登录用户允许访问
     * perm：需要特定权限访问，该表达式如果不写，则表示使用内部的权限体系，也可以添加[role]来指定某个角色能够访问
     *
     */
    private List<String> urlRule;

    /**
     * 单点认证服务地址
     */
    private String ssoServerUrl;

    /**
     * 只需认证登录状态的路径，支持ant语法
     */
    @Deprecated
    private List<String> onlyAuthPath;

}
